/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package smallsimulator;

import simulador.Aleatorio;

/**
 *
 * @author Old
 */
public class distruibuicoes {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        
        Aleatorio randnums = new Aleatorio(2);
        ConstrucaoGrafico graf = new ConstrucaoGrafico("linhas");
        graf.setTituloGrafico("Gráfico da distribuição de números gerados pelos diferentes geradores aleatórios");
        graf.setEixoXLabel("valor gerado");
        graf.setEixoYLabel("número de ocorrências");
        String[] nn = new String[3];
        nn[0] = "normal";
        nn[1] = "uniforme";
        nn[2] = "exponencial";
        graf.setnRegistos(3, nn);
        for (int m = 0; m<3; m++){
            float[] valsm = new float[4000];
                for (int v = 0; v < 4000; v++) {
                    valsm[v] = 0;
                }
                int run = 0;
            for (int r = 0; r < 50; r++) {
                float[] vals = new float[4000];
                for (int v = 0; v < 4000; v++) {
                    vals[v] = 0;
                }
                for (int v = 0; v < 1000000; v++) {
                    float point = 0;
                    if(m==0){
                        point = (float) randnums.gaussian(50, 17);
                    }else if (m==1){
                        point = (float) randnums.uniform(50, 17);
                    }else {
                        point = (float) randnums.exponencial(3);
                    }
                    vals[(int)Math.floor(point*10)+1500]++;
                    //float point = (float) randnums.nothing();
                    //System.out.println("added point "+(int)Math.floor(point));

                }
                //System.out.println(" r: "+m);
                if(run==0){
                    for (int v = 0; v < 4000; v++) {
                        valsm[v] = vals[v];
                    }
                }else {
                    for (int v = 0; v < 4000; v++) {
                        valsm[v] = (valsm[v]+vals[v])/2;
                    }
                }
                
            }
            graf.addValores(valsm, m);
        }
        System.out.println("grafico gerado");
        graf.renderGrafico();

        graf.saveTo("distribuicoes.jpg");
        System.out.println("imagem guardada");
    }
}
